# Made by Kerberos
# this script is part of the Official L2J Datapack Project.
# Visit http://www.l2jdp.com/forum/ for more details.
import sys
from com.l2jserver.gameserver.ai import CtrlIntention
from com.l2jserver.gameserver.datatables import SpawnTable
from com.l2jserver.gameserver.model.quest import State
from com.l2jserver.gameserver.model.quest import QuestState
from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jserver.gameserver.network import NpcStringId
from com.l2jserver.gameserver.network.serverpackets import NpcSay
from com.l2jserver.gameserver.network.serverpackets import ExShowScreenMessage

qn = "114_ResurrectionOfAnOldManager"

#NPCs
Newyear = 31961
Yumi = 32041
Stones = 32046
Wendy = 32047
Box = 32050

#Mobs
Guardian = 27318

#Items
Detector = 8090
Detector2 = 8091
Starstone = 8287
Letter = 8288
Starstone2 = 8289

class Quest (JQuest) : 

 def __init__(self,id,name,descr):
    JQuest.__init__(self,id,name,descr)
    self.isSpawned = 0
    self.questItemIds = [Starstone,Detector,Detector2,Letter,Starstone2]

 def activateDetector(self, npc, player, st) :
    for obj in npc.getKnownList().getKnownObjects().values() :
       if obj != None :
          if obj == player and st.getInt("cond") == 17:
             st.playSound("ItemSound.quest_middle")
             st.takeItems(Detector,1)
             st.giveItems(Detector2,1)
             st.set("cond","18")
             player.sendPacket(ExShowScreenMessage(NpcStringId.THE_RADIO_SIGNAL_DETECTOR_IS_RESPONDING_A_SUSPICIOUS_PILE_OF_STONES_CATCHES_YOUR_EYE, 2, 4500))
             break
    return

 def onAdvEvent (self,event,npc, player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st : return
    if event == "31961-02.htm" :
       st.set("cond","22")
       st.takeItems(Letter,1)
       st.giveItems(Starstone2,1)
       st.playSound("ItemSound.quest_middle")
    if event == "32041-02.htm" :
       st.setState(State.STARTED)
       st.playSound("ItemSound.quest_accept")
       st.set("cond","1")
       st.set("talk","0")
    elif event == "32041-06.htm" :
       st.set("talk","1")
    elif event == "32041-07.htm" :
       st.set("cond","2")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32041-10.htm" :
       choice = st.getInt("choice")
       if choice == 1 :
          htmltext = "32041-10.htm"
       elif choice == 2 :
          htmltext = "32041-10a.htm"
       elif choice == 3 :
          htmltext = "32041-10b.htm"
    elif event == "32041-11.htm" :
       st.set("talk","1")
    elif event == "32041-18.htm" :
       st.set("talk","2")
    elif event == "32041-20.htm" :
       st.set("cond","6")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32041-25.htm" :
       st.set("cond","17")
       st.playSound("ItemSound.quest_middle")
       st.giveItems(Detector,1)
    elif event == "32041-28.htm" :
       st.takeItems(Detector2,1)
       st.set("talk","1")
    elif event == "32041-31.htm" :
       choice = st.getInt("choice")
       if choice == 2 :                                # pmq 修改
          htmltext = "32041-37.htm"
    elif event == "32041-32.htm" :
       st.set("cond","21")
       st.giveItems(Letter,1)
       st.playSound("ItemSound.quest_middle")
    elif event == "32041-36.htm" :
       st.set("cond","20")
       st.set("progress","MIDDLE")                     # pmq 修改
       st.playSound("ItemSound.quest_middle")
    elif event == "32046-02.htm" :
       st.set("cond","19")
       st.playSound("ItemSound.quest_middle")
    elif event == "32046-06.htm" :
       st.exitQuest(False)
       st.addExpAndSp(1846611,144270)
       st.playSound("ItemSound.quest_finish")
    elif event == "32047-01.htm" :
       if st.getInt("talk") + st.getInt("talk1") == 2:
          htmltext = "32047-04.htm"
       elif st.getInt("talk") + st.getInt("talk1") + st.getInt("talk2")== 6:
          htmltext = "32047-08.htm"
    elif event == "32047-02.htm" :
       if st.getInt("talk") == 0 :
          st.set("talk","1")
    elif event == "32047-03.htm" :
       if st.getInt("talk1") == 0 :
          st.set("talk1","1")
    elif event == "32047-05.htm" :
       st.set("cond","3")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","1")
       st.unset("talk1")
    elif event == "32047-06.htm" :
       st.set("cond","4")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","2")
       st.unset("talk1")
    elif event == "32047-07.htm" :
       st.set("cond","5")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
       st.set("choice","3")
       st.unset("talk1")
    elif event == "32047-13b.htm" :                    # pmq 修改
       st.set("cond","7")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-13a.htm" :
       st.set("cond","10")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-15.htm" :
       if st.getInt("talk") == 0 :
          st.set("talk","1")
    elif event == "32047-15a.htm" :
       if self.isSpawned == 0 :
          golem = st.addSpawn(Guardian,96977,-110625,-3280,0,False,900000)
          nSay = NpcSay(golem.getObjectId(), 0, golem.getNpcId(), NpcStringId.YOU_S1_YOU_ATTACKED_WENDY_PREPARE_TO_DIE)
          nSay.addStringParameter(player.getName())
          golem.broadcastPacket(nSay)
          golem.setRunning()
          golem.addDamageHate(player,0,999)
          golem.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, player)
          self.isSpawned = 1
       else:
          htmltext = "32047-19a.htm"
    elif event == "32047-17a.htm" :
       st.set("cond","12")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-20.htm" :
          st.set("talk","2")
    elif event == "32047-23.htm" :
       st.set("cond","13")
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32047-25.htm" :
       st.set("cond","15")
       st.playSound("ItemSound.quest_middle")
       st.takeItems(Starstone,1)
    elif event == "32047-30.htm" :
       st.set("talk","2")
    elif event == "32047-33.htm" :
       if st.getInt("cond") == 7:
          st.set("cond","8")
          st.set("talk","0")
          st.playSound("ItemSound.quest_middle")
       elif st.getInt("cond") == 8:
          st.set("cond","9")
          st.playSound("ItemSound.quest_middle")
          htmltext = "32047-34.htm"
    elif event == "32047-34.htm" :
          st.set("cond","9")
          st.playSound("ItemSound.quest_middle")
    elif event == "32047-36a.htm" :                    # pmq 修改
          st.set("cond","23")
          st.playSound("ItemSound.quest_middle")
    elif event == "32047-38.htm" :
       st.giveItems(Starstone2,1)
       st.takeItems(57,3000)
       st.set("cond","26")
       st.playSound("ItemSound.quest_middle")
    elif event == "32047-39" :                         # pmq 修改
         htmltext = "32047-39.htm"
         if st.get("progress") :
            if st.get("progress") == "MIDDLE":
               htmltext = "32047-41.htm"
    elif event == "32050-02.htm" :
       st.playSound("ItemSound.armor_wood_3")
       st.set("talk","1")
    elif event == "32050-04.htm" :
       st.set("cond","14")
       st.giveItems(Starstone,1)
       st.playSound("ItemSound.quest_middle")
       st.set("talk","0")
    elif event == "32050-04a.htm" :                    # pmq 修改
       st.set("cond","24")
       st.giveItems(Starstone2,1)
       st.playSound("ItemSound.quest_middle")
    return htmltext

 def onFirstTalk (self,npc,player): #atm custom, on retail it is when you walk to npcs radius
    st = player.getQuestState(qn)
    if st : 
        if npc.getNpcId() == Stones and st.getInt("cond") == 17:
           st.playSound("ItemSound.quest_middle")
           st.takeItems(Detector,1)
           st.giveItems(Detector2,1)
           st.set("cond","18")
           player.sendPacket(ExShowScreenMessage(NpcStringId.THE_RADIO_SIGNAL_DETECTOR_IS_RESPONDING_A_SUSPICIOUS_PILE_OF_STONES_CATCHES_YOUR_EYE, 2, 4500))
    npc.showChatWindow(player)
    return None

 def onTalk (self,npc,player):
    htmltext = "<html><body>目前没有执行任务，或条件不符。</body></html>"
    st = player.getQuestState(qn)
    if not st : return htmltext
    state = st.getState()
    npcId = npc.getNpcId()
    cond = st.getInt("cond")
    talk = st.getInt("talk")
    talk1 = st.getInt("talk1")
    if state == State.COMPLETED :
       htmltext = "<html><body>这是已经完成的任务。</body></html>"
    elif npcId == Yumi :
       if state == State.CREATED :
          Pavel = player.getQuestState("121_PavelTheGiants")
          if Pavel:
             if st.getPlayer().getLevel() >= 70 and Pavel.getState() == State.COMPLETED :
                htmltext = "32041-01.htm"
             else :
                htmltext = "32041-00.htm"
                st.exitQuest(1)
          else :
             htmltext = "32041-00.htm"
             st.exitQuest(1)
       elif cond == 1:
          if talk == 0:
             htmltext = "32041-02.htm"
          else:
             htmltext = "32041-06.htm"
       elif cond == 2:
          htmltext = "32041-08.htm"
       elif cond in [3,4,5]:
          if talk == 0:
             htmltext = "32041-09.htm"
          elif talk == 1:
             htmltext = "32041-11.htm"
          else:
             htmltext = "32041-18.htm"
       elif cond == 6:
          htmltext = "32041-21.htm"
       elif cond in [9,12,16]:
          htmltext = "32041-22.htm"
       elif cond == 17:
          htmltext = "32041-26.htm"
       elif cond == 19:
          if talk == 0:
             htmltext = "32041-27.htm"
          else:
             htmltext = "32041-28.htm"
       elif cond == 20:
          htmltext = "32041-36.htm"
       elif cond == 21:
          htmltext = "32041-33.htm"
       elif cond in [22,25,26]:                        # pmq 修改
          htmltext = "32041-34.htm"
          st.set("cond","27")
          st.playSound("ItemSound.quest_middle")
       elif cond == 27:
          htmltext = "32041-35.htm"
    elif npcId == Wendy :
       if cond == 2:
          if talk + talk1 < 2:
             htmltext = "32047-01.htm"
          elif talk + talk1 == 2:
             htmltext = "32047-04.htm"
       elif cond == 3:
          htmltext = "32047-09.htm"
       elif cond == 4:                                 # pmq 修改
          htmltext = "32047-09a.htm"
       elif cond == 5:                                 # pmq 修改
          htmltext = "32047-09b.htm"
       elif cond == 6:
          choice = st.getInt("choice")
          if choice == 1:
             if talk == 0:
                htmltext = "32047-10.htm"
             elif talk == 1:
                htmltext = "32047-20.htm"
             else :
                htmltext = "32047-30.htm"
          elif choice == 2:
             htmltext = "32047-10a.htm"
          elif choice == 3:
            if talk == 0:
               htmltext = "32047-14.htm"
            elif talk == 1:
               htmltext = "32047-15.htm"
            else:
               htmltext = "32047-20.htm"
       elif cond == 7:
          if talk == 0:
             htmltext = "32047-14.htm"
          elif talk == 1:
             htmltext = "32047-15.htm"
          else:
             htmltext = "32047-20.htm"
       elif cond == 8:
          htmltext = "32047-30.htm"
       elif cond == 9:
          htmltext = "32047-27.htm"
       elif cond == 10:
          htmltext = "32047-14a.htm"
       elif cond == 11:
          htmltext = "32047-16a.htm"
       elif cond == 12:
          htmltext = "32047-18a.htm"
       elif cond == 13:
          htmltext = "32047-23.htm"
       elif cond == 14:
          htmltext = "32047-24.htm"
       elif cond == 15:
          htmltext = "32047-26.htm"
          st.set("cond","16")
          st.playSound("ItemSound.quest_middle")
       elif cond == 16:
          htmltext = "32047-27.htm"
       elif cond == 20:                                # pmq 修改
          choice = st.getInt("choice")
          if choice == 3:
             htmltext = "32047-35.htm"
          else:
             htmltext = "32047-35a.htm"
       elif cond == 23:                                # pmq 修改
          htmltext = "32047-37a.htm"                   # pmq 修改
       elif cond == 24:                                # pmq 修改
          htmltext = "32047-38a.htm"                   # pmq 修改
          st.set("cond","25")
          st.playSound("ItemSound.quest_middle")
       elif cond == 25:                                # pmq 修改
          htmltext = "32047-38a.htm"                   # pmq 修改
       elif cond == 26:
          htmltext = "32047-40.htm"
    elif npcId == Box :
       if cond == 13:
          if talk == 0:
             htmltext = "32050-01.htm"
          else:
             htmltext = "32050-03.htm"
       elif cond == 14:
          htmltext = "32050-05.htm"
       elif cond == 23:                                # pmq 修改
          htmltext = "32050-01a.htm"                   # pmq 修改
       elif cond == 24:                                # pmq 修改
          htmltext = "32050-06.htm"                    # pmq 修改
    elif npcId == Stones :
       if cond == 18:
          htmltext = "32046-01.htm"
       elif cond == 19:
          htmltext = "32046-02.htm"
       elif cond == 27:
          htmltext = "32046-03.htm"
    elif npcId == Newyear :
       if cond == 21:
          htmltext = "31961-01.htm"
       elif cond == 22:
          htmltext = "31961-03.htm"
    return htmltext

 def onKill(self,npc,player,isPet):
   st = player.getQuestState(qn)
   if not st: return 
   npcId = npc.getNpcId()
   if st.getState() == State.STARTED and st.getInt("cond") == 10:
      if npcId == Guardian :
         npc.broadcastPacket(NpcSay(npc.getObjectId(), 0, npcId, NpcStringId.THIS_ENEMY_IS_FAR_TOO_POWERFUL_FOR_ME_TO_FIGHT_I_MUST_WITHDRAW))
         st.set("cond","11")
         st.playSound("ItemSound.quest_middle")

QUEST = Quest(114,qn,"古代管理者的复活")

QUEST.addStartNpc(Yumi)
QUEST.addFirstTalkId(Stones)

QUEST.addTalkId(Yumi)
QUEST.addTalkId(Wendy)
QUEST.addTalkId(Box)
QUEST.addTalkId(Stones)
QUEST.addTalkId(Newyear)

QUEST.addKillId(Guardian)